#include <iostream>
#include <vector>
#include <string>

size_t split(const std::string &str,const std::string &sep,std::vector<std::string> &result)
{
    //分割的思想：
        //1.从0位置开始找指定的字符，找到之后开始分割
        //2.从上次查找的位置开始继续往后查找指定字符
        size_t pos,idx=0;
        while(idx<str.size())
        {
            pos=str.find(sep,idx);
            if(pos==std::string::npos)
            {
                //没有找到，那么从查找位置截取到末尾
                result.push_back(str.substr(idx));
                return result.size();
            }
            //pos==idx,代表两个分隔符之间没有数据，或者说起始位置就是分割符
            if(pos==idx)
            {
                idx=pos+sep.size();
                continue;
            } 
            result.push_back(str.substr(idx,pos-idx));
            idx=pos+sep.size();
        }
        return result.size();
}

int main()
{
    std::string str="...news....music.#.pop...";
    std::vector<std::string> arry;
    int n=split(str,".",arry);
    for(auto&s :arry)
    {
        std::cout<<s<<std::endl;
    }
    return 0;
}